Technical Field
This disclosure relates generally to data processing systems and, in particular, to state machines.
Background of the Related Art
State machines, also referred to as “finite state machines,” are computing devices designed with the operational states required to solve a specific problem. In a typical state machine, events are fed into the system to transition the state machine from one state to another. In more complex state machines, the state machine is made up of different sub-components; the sub-components (or some of them) could be on the same system as a main component, or the sub-components can be spread across different systems that can be located a geographical distance apart from each other. These different sub-components often feed events into the main component of the state machine, as well as transition into states of their own, e.g., based on events fed from other sub-components of the state machine.
A significant challenge in managing a state machine is trying to maintain a time-consistent state of each of the sub-components of the overall state machine, especially when events are being fed into the main component and sub-components (or even the main component) have temporarily removed themselves from the state machine. Once the sub-components have rejoined the state machine, for the state machine to continue to operate appropriately, these sub-components need to be transitioned into the same time-consistent state as the other sub-components, based on the last state of these sub-components prior to them leaving the state machine.
It is known in the prior art to preserve state information in a state machine, but such techniques rely on recording the states of all sub-components, as well as all state-transitioning events. This is a costly and complex requirement, and one that increases the difficulty in managing the state machine.